package com.bawei.common


import android.content.Context
import android.content.res.AssetManager
import android.graphics.Typeface
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView

/**
 * Author: Jason Zhang
 * Date: 2024/4/22
 * Desc: 带字体的TextView
 */
class FontTextView: AppCompatTextView {

    private var defaultFont = "FZLanTingHeiS-DB1-GB-Regular.TTF"

    /**
     * 代码中创建需要调用
     */
    constructor(context: Context) : super(context){
        initTypeFace(context)
    }

    /**
     * 布局中定义组件需要调用
     */
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs){
        //获取自定义属性
        if(attrs != null){
            var typeArray = context.obtainStyledAttributes(attrs, R.styleable.FontTextView)
            var fontName = typeArray.getString(R.styleable.FontTextView_fontName)
            if(fontName != null){
                 defaultFont = fontName.toString()
            }
            //存在IO读取文件，所以需要回收
            typeArray.recycle()
        }

        initTypeFace(context)
    }

    /**
     * 布局中调用
     */
    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr){
        initTypeFace(context)
    }


    /**
     * 初始化字体文件
     */
    private fun initTypeFace(context: Context) {
        //1.获取Assets文件夹下字体文件，需要使用AssetManager对象
        var assetsMgr: AssetManager = context.assets

        //2.获取字体文件并创建TypeFace对象
        var font = Typeface.createFromAsset(assetsMgr, "fonts/${defaultFont}")

        //3.设置字体
        typeface = font
    }






}